package easy._111_MinimumDepthofBinaryTree;

public class MinimumDepthofBinaryTree {

    public int minDepth(TreeNode root) {
        if(root==null){
            return 0;
        }
        if(root.left==null && root.right!=null){
            return 1 + minDepth(root.right);
        }else if(root.right==null && root.left!=null){
            return 1 + minDepth(root.left);
        }else {
            int leftLength, rightLength = 0;
            leftLength = minDepth(root.left);
            rightLength = minDepth(root.right);
            return 1 + (leftLength > rightLength ? rightLength : leftLength);
        }
    }

    //同时间不同解法
    public int minDepth1(TreeNode root) {
        if (root == null){
            return 0;
        }
        if (root.left == null){
            return minDepth(root.right) + 1;
        }else if (root.right == null){
            return minDepth(root.left) + 1;
        }
        return Math.min(minDepth(root.left), minDepth(root.right)) + 1;
    }
}
